home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Extra 1996 #2 / Amiga Plus CD - 1996 - No. 2 Extra.iso / clarissa1_1-demo / macros / optima.clssa < prev    next >
Text File  |  1995-01-26  |  7KB  |  316 lines

  1. /***********************************************************************
  2.  $DAT >>OptimA.clssa<<        25.10.1993 - (C) ProDAD Holger Burkarth
  3.                               24.01.1995 - (C) ProDAD Michael Christoph
  4. ************************************************************************/
  5.  
  6. Options RESULTS
  7. Address clariSSA
  8.  
  9.   FailAt 11
  10.   AltFail=RESULT
  11.  
  12.   GetPref
  13.   M_Pref=RESULT
  14.   SetPref "HBComp OFF LaceCompensation OFF COMPRESS 5"
  15.   GetPlayMode
  16.   M_PlayMode=RESULT
  17.   SetPlayMode "FOREVER ON HarmLoop OFF DFPMode ON"
  18.  
  19.  
  20.   DO FOREVER
  21.     DO FOREVER
  22.       WorkAnim="Source_A"
  23.       IF TestReg(WorkAnim)=0 THEN LEAVE
  24.       WorkAnim="Source_B"
  25.       IF TestReg(WorkAnim)=0 THEN LEAVE
  26.       WorkAnim="Source_C"
  27.       IF TestReg(WorkAnim)=0 THEN LEAVE
  28.       WorkAnim="Source_D"
  29.       IF TestReg(WorkAnim)=0 THEN LEAVE
  30.       WorkAnim=""
  31.       LEAVE
  32.     END
  33.  
  34.     IF WorkAnim="" THEN DO
  35.       SelectAnim "Source_A Source_B Source_C Source_D",
  36.                  "TITLE 'Wählen Sie ein Arbeits-Register zur@Zwischenspeicherung aus.'",
  37.                  "REQ"
  38.       IF RC > 1 THEN LEAVE
  39.       WorkAnim=RESULT
  40.       CloseAnim WorkAnim
  41.       IF RC > 1 THEN LEAVE
  42.     END
  43.  
  44.     SelectAnim Master
  45.     GetAnimInfo
  46.     IF RESULT~="" THEN DO
  47.       PARSE VAR RESULT ."ID" AnimID . "FORMAT" ex ey et "VIEWMODE" eViewMode "FRAMES" frames .
  48.       IF CheckAnimIDChange(AnimId,1)=1 THEN DO
  49.  
  50.         MSRequester "TITLE '*** Optimierung ***'",
  51.                           "'Optimierung der Master-Animation'",
  52.                           "''",
  53.                           "'("AnimID") FORMAT: "ex ey et eViewMode " FRAMES:" frames "'",
  54.                           "''",
  55.                           "'Das Macro versucht die Animation so zu verändern,'",
  56.                           "'daß sie flüssig abläuft.'",
  57.                           "''",
  58.                           "'Sollte nach dieser Optimierung die Animation immer'",
  59.                           "'noch nicht flüssig ablaufen, dann schalten Sie in'",
  60.                           "'den Abspielarten-Einstellungen den DFPmodus aus.'",
  61.                     "PTEXT 'Vollautomatische Optimierung starten'",
  62.                           "'** Abbruch **'"
  63.  
  64.         IF RC~=0 | RESULT>1 THEN LEAVE
  65.  
  66.         res=AutoOpti(WorkAnim,1)
  67.         IF res~="BREAK" THEN Message "'Optimierung beendet'"
  68.  
  69.  
  70.       END
  71.       ELSE DO
  72.         Message "'Diese Animation kann nicht''(weiter) optimiert werden.'"
  73.       END
  74.     END
  75.     ELSE DO
  76.       Message "'Keine Master-Animation vorhanden'"
  77.       LEAVE
  78.     END
  79.     LEAVE
  80.   END
  81.  
  82.   RequestStatus ON
  83.   SetPref M_Pref
  84.   SetPlayMode M_PlayMode
  85.   FailAt AltFail
  86. exit
  87.  
  88.  
  89.  
  90.  
  91.  
  92. TestReg: procedure
  93. DO
  94.   ARG Reg
  95.  
  96.   GetAnimInfo Reg
  97.   IF RESULT~="" THEN RETURN(1)
  98.   RETURN (0)
  99. END
  100.  
  101.  
  102. GetVersion: procedure
  103. DO
  104.   Information
  105.   PARSE VAR RESULT . "VERSION:" cl .
  106.   RETURN (cl)
  107. END
  108.  
  109.  
  110. CheckAnimIDChange: procedure
  111. DO
  112.   ARG ID,Mode
  113.  
  114.   IF Mode=1 THEN DO
  115.     IF ID='SSA ' THEN RETURN(1)
  116.   END
  117.   ELSE IF Mode=2 THEN DO
  118.     IF ID='MDHD' THEN RETURN(0)
  119.     RETURN(1)
  120.   END
  121.   RETURN (0)
  122. END
  123.  
  124.  
  125.  
  126. RecordSSA5: procedure
  127. DO
  128.   ARG WorkAnim
  129.  
  130.   Message "'Umwandlung nach High-End-SSA ist''nur in der Professionel-''Version möglich.'"
  131.  
  132.   RETURN (0)
  133. END
  134.  
  135.  
  136. AutoOpti: procedure
  137. DO
  138.   ARG WorkAnim,Auto
  139.  
  140.   SelectAnim MASTER
  141.   GetAnimInfo
  142.   PARSE VAR RESULT . "VIEWMODE" ViewMode "FRAMES" .
  143.  
  144.   GetArea
  145.   M_Area=RESULT
  146.   PARSE VAR RESULT "FROM" start "TO" end .
  147.  
  148.   RequestStatus OFF
  149.   NewRun=1
  150.  
  151.   IF end-start >32 THEN  Zeilen=16
  152.   ELSE                   Zeilen=(end-start)/2
  153.   Chars=40
  154.  
  155.   CPM.0="A s-"
  156.   CPM.1="B s+"
  157.   CPM.2="B s++"
  158.   CPM.3="High-End-SSA"
  159.  
  160.   /*** Delta,Machine ***/
  161.   MAT.1 = " Standard (ohne Hardwaredaten)"
  162.   MAT.2 = "CPU 68030 & ECS-Chipset"
  163.   MAT.3 = "CPU 68030 & AGA-Chipset"
  164.   MAT.4 = "CPU 68040 & ECS-Chipset"
  165.   MAT.5 = "CPU 68040 & AGA-Chipset"
  166.  
  167. /*** 1=s-, 2=B+, 3=B++ **/
  168.   MA.1.1 = 25000 ; MA.2.1 = 30000 ; MA.3.1 = 44000
  169.   MA.1.2 = 25000 ; MA.2.2 = 30000 ; MA.3.2 = 44000
  170.   MA.1.3 = 36000 ; MA.2.3 = 45000 ; MA.3.3 = 59000
  171.   MA.1.4 = 30000 ; MA.2.4 = 37000 ; MA.3.4 = 50000
  172.   MA.1.5 = 39000 ; MA.2.5 = 47000 ; MA.3.5 = 62000
  173.  
  174.   MA_Max=5
  175.   CP_Max=3  /* Kompressionsmodi */
  176.  
  177.  
  178.   ViewFak=1
  179.   IF INDEX(ViewMode,"SUPERHIRES")>0 THEN ViewFak=0.35
  180.   ELSE IF INDEX(ViewMode,"HIRES")>0 THEN ViewFak=0.65
  181.  
  182.   a=""; l=1
  183.   DO UNTIL l>MA_Max
  184.     a=a "'" MAT.l "'"
  185.     l=l+1
  186.   END
  187.  
  188.   MSRequester "TITLE '*** Optimierung ***'",
  189.                     "''",
  190.                     "'Die Optimierung bezieht sich auf die'",
  191.                     "'Hardware und kann hier ausgewählt werden.'",
  192.               "PTEXT" a,
  193.                     "'** Abbruch **'"
  194.   IF RC~=0 | RESULT>MA_Max THEN RETURN(0)
  195.   Machine=RESULT
  196.  
  197.  
  198.   l=start;
  199.   DO UNTIL l>end
  200.     l=l+1
  201.     FrameMode.l = 1
  202.   END
  203.  
  204.   SetPref "COMPRESS 1"
  205.   ACRepair
  206.  
  207.   DO FOREVER
  208.     Ende=1
  209.     SetWorkLock ON
  210.  
  211.     flag=0
  212. /****** nur in Professionel V3
  213. /***** Scan-Lauf *****/
  214.     l=start; FrameMem.0 =0
  215.     DO UNTIL l>end
  216.       GetDeltaInfo "FROM" l "TO" l
  217.       PARSE VAR RESULT . "MEM" mem .
  218.       l=l+1
  219.       FrameMem.l = mem
  220.     END
  221.  
  222.  
  223.     ll=1; zmin=10000000; zmax=0
  224.     Anz=end-start+1
  225.     DO UNTIL ll>Zeilen
  226.       l=TRUNC((ll-1)*Anz/Zeilen+start)
  227.       le=TRUNC(ll*Anz/Zeilen+start-1)
  228.       xmax=0
  229.       DO UNTIL l>le
  230.         l=l+1
  231.         IF FrameMem.l>xmax & l~=2 THEN xmax=FrameMem.l
  232.       END
  233.       ll=ll+1
  234.       ZeilenMem.ll=xmax
  235.       IF xmax<zmin THEN zmin=xmax
  236.       IF xmax>zmax THEN zmax=xmax
  237.     END
  238.  
  239.  
  240.     zmin=TRUNC(zmin/2+1)
  241.     l=1; a=""; flag=0
  242.     MD=MA.NewRun.Machine*ViewFak
  243.     DO UNTIL l>Zeilen
  244.       l=l+1
  245.       x=TRUNC((ZeilenMem.l - zmin)/(zmax-zmin)*Chars +.5)
  246.       b=TRUNC(ZeilenMem.l/10)/100 "kB"
  247.       y=LENGTH(b)
  248.  
  249.       IF ZeilenMem.l > MD THEN DO
  250.         Zeichen="#"; flag=1
  251.       END
  252.       ELSE  Zeichen="-"
  253.       a=a "'" COPIES(Zeichen,x)">" b COPIES(" ",Chars-x+10-y) "'"
  254.     END
  255.  
  256.  
  257.     IF flag=1 THEN  pt="'Schwachstellen optimieren ("CPM.NewRun")'"
  258.     ELSE            pt="'Weiter optimieren'"
  259.  
  260.     bar="===================================================="
  261. ******/
  262.  
  263.     SetWorkLock OFF
  264.  
  265.  
  266.  
  267.     x=flag
  268.  
  269.     IF x=1 THEN DO
  270.       SMode=flag
  271.       IF NewRun <= CP_Max THEN DO
  272.         l=start
  273.         IF l=1 THEN l=2
  274.         dd=10;
  275.         DO UNTIL l>end
  276.           ll=l; flag=0
  277.           le=MIN(ll+dd,end)
  278.           DO UNTIL ll>le
  279.             ll=ll+1
  280.  
  281.             CMode=FrameMode.ll
  282.             MD=MA.CMode.Machine*ViewFak
  283.             IF FrameMem.ll > MD THEN DO
  284.               flag=NewRun
  285.               LEAVE
  286.             END
  287.           END
  288.           IF      flag=2 THEN  SetPref "COMPRESS 5"
  289.           ELSE IF flag=1 THEN  SetPref "COMPRESS 4"
  290.  
  291.           IF flag<3 & flag>0 THEN DO
  292.             Ende=0
  293.             SetArea "FROM" l "TO" l+dd-1
  294.             ACRepair
  295.             IF RC~=0 THEN LEAVE
  296.             ll=l
  297.             CMode=flag+1
  298.             DO UNTIL ll>l+dd
  299.               ll=ll+1
  300.               FrameMode.ll=CMode
  301.             END
  302.           END
  303.           l=l+dd
  304.         END
  305.       END
  306.  
  307.     END
  308.  
  309.     IF Ende~=0 THEN LEAVE
  310.     NewRun=NewRun+1
  311.   END
  312.  
  313.  
  314.   RETURN(0)
  315. END
  316.